{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Getting the mid-circuit states\n", "\n", "Usually, we only see the final results of the execution of our circuit. However, occasionally it is helpful to know how the state of the system evolves during the execution of the circuit, particularly if we are interested in the statevector and the density matrix of the system.\n", "\n", " It is necessary to state that on real quantum computers, it is not necessarily possible to get the mid-circuit states (and the measurements also), so this is an excellent functionality for the emulator.\n", "\n", "To achieve this, we will use barriers supported by Qiskit and OpenQASM standards. We will get the results of the states of the system at the location where the barrier is placed. Also, it is crucial to notice that the barriers divide the circuit for transpilation. Hence, they will behave as a separator for the states and the transpilation process.\n", "\n", "First, we will demonstrate the usage of the barriers. Afterward, we will retrieve the desired states at the given time.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:51:47.024962Z", "start_time": "2024-10-08T14:51:46.726297Z" } }, "outputs": [], "source": [ "# For more information see notebooks 2 & 3\n", "from c12_callisto_clients.user_configs import UserConfigs\n", "from c12_callisto_clients.qiskit.c12sim_provider import C12SimProvider\n", "import os\n", "user_auth_token = os.getenv(\"C12_TOKEN\")\n", "configs = UserConfigs.parse_obj({\"token\" : user_auth_token})\n", "c12_simulator_provider = C12SimProvider(configs)\n", "c12_simulator_backend = c12_simulator_provider.get_backend('c12sim-iswap')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:51:51.979025Z", "start_time": "2024-10-08T14:51:51.884106Z" } }, "outputs": [ { "data": { "text/plain": " ┌───┐ ░ ░ \nq_0: ┤ H ├─░───■───░──────\n └───┘ ░ ┌─┴─┐ ░ ┌───┐\nq_1: ──────░─┤ X ├─░─┤ X ├\n ░ └───┘ ░ └───┘", "text/html": "
     ┌───┐ ░       ░      \nq_0: ┤ H ├─░───■───░──────\n     └───┘ ░ ┌─┴─┐ ░ ┌───┐\nq_1: ──────░─┤ X ├─░─┤ X ├\n           ░ └───┘ ░ └───┘
" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit import QuantumCircuit\n", "\n", "# For more info about Qiskit see notebook 1 and Qiskit's documentation\n", "circuit = QuantumCircuit(2)\n", "circuit.h(0)\n", "circuit.barrier() # We add a barrier at this position\n", "circuit.cx(0, 1)\n", "circuit.barrier()\n", "circuit.x(1)\n", "\n", "circuit.draw()\n", "# Notice the barrier position in the circuit" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:52:48.880150Z", "start_time": "2024-10-08T14:51:56.241718Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "C12 simulation counts: {'00': 13, '01': 4999, '10': 4981, '11': 7}\n" ] } ], "source": [ "# Running the circuit on Callisto\n", "c12_job = c12_simulator_backend.run(circuit, shots=10000)\n", "c12_result = c12_job.result()\n", "c12_counts = c12_result.get_counts()\n", "print(f\"C12 simulation counts: {c12_counts}\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:53:23.952461Z", "start_time": "2024-10-08T14:53:23.446790Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "14a1833f-f695-42ba-b665-58dae6f9f5eb\n" ] }, { "data": { "text/plain": "
", "image/png": "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" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the job_id\n", "job_id = c12_job.job_id()\n", "print(job_id)\n", "\n", "# Getting all the data (transpiled circuit mainly)\n", "orig_circuit = c12_job.get_circuit(transpiled=False)\n", "orig_circuit.draw('mpl')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:53:25.978289Z", "start_time": "2024-10-08T14:53:25.863780Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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" }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "transpiled_circuit = c12_job.get_circuit(transpiled=True)\n", "transpiled_circuit.draw('mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting the mid-circuit states" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mid-circuit states are stored in the result object obtained from the job execution. The values can be accessed directly from the Result instance using the following command:\n", "\n", "\n", " `result_obj.data()['sv{NUM}']` for the state vector\n", " `result_obj.data()['dm{NUM}']` for the density matrix\n", "\n", "The `{NUM}` presents the cardinal number of the barrier starting from one." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:53:31.428251Z", "start_time": "2024-10-08T14:53:31.345450Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuIAAAG7CAYAAACGivCdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXgklEQVR4nO3dd3wU1f7/8femkEIKLQ0kCaEjLVSBIEUkSFEQaRYg1KsXBRFBVJqoQUSKXpQvqAQLUvSqSFEgV0QB4SpFVEQIJbQEEiShpu7vD37sZU0CyWaTSTav5+ORh86ZM3M+s2fZfPbkzBmT2Ww2CwAAAECxcjI6AAAAAKAsIhEHAAAADEAiDgAAABiARBwAAAAwAIk4AAAAYAAScQAAAMAAJOIAAACAAUjEAQAAAAOQiAMAAAAGIBEHkG+hoaEaOnRosbd77NgxmUwmxcTEFHvbhTV9+nSZTCa7n9eovgAA2A+JOADFxcVp9OjRCgsLk7u7u3x8fNSuXTstWLBAV69eNTq8XK1fv17Tp083OowitX37dk2fPl0XLlwwOhQAQBFwMToAAMZat26d+vXrJzc3Nw0ePFgNGzZUenq6fvjhBz377LP67bfftHjxYknSwYMH5eRU/N/fQ0JCdPXqVbm6ulrK1q9fr4ULFzp0Mr59+3bNmDFDQ4cOVYUKFaz2GdUXAAD7IREHyrCjR49q4MCBCgkJ0X/+8x8FBQVZ9v3zn//U4cOHtW7dOkuZm5vbbc95+fJllS9f3q5xmkwmubu72/WcpV1++gIAULIxnAKUYbNnz9alS5f03nvvWSXhN9SqVUtjx461bP99XnJMTIxMJpO+++47PfHEE/L399cdd9xh2b9hwwZ16NBB3t7e8vHxUcuWLbV8+fI8z3dDx44d1bFjR8v23+eIDx06VAsXLpR0PUm/8XM7GzZsUPv27VW+fHl5e3urR48e+u233yz758yZI5PJpOPHj+c4dvLkySpXrpz++usvS9nq1avVvHlzeXh4qEqVKnr00Ud16tSpW8Zwq/nuJpPJMsI/ffp0Pfvss5KkGjVqWK7x2LFjknJ/7Y4cOaJ+/fqpUqVK8vT01F133WX1RUqStmzZIpPJpFWrVumVV17RHXfcIXd3d91zzz06fPjwLWMHANgXI+JAGfbVV18pLCxMbdu2LdR5nnjiCfn5+Wnq1Km6fPmypOtJ+rBhw3TnnXdq8uTJqlChgvbs2aOvv/5aDz/8cKHaGz16tE6fPq1Nmzbpww8/zNcxH374oYYMGaLIyEi99tprunLlit555x1FRERoz549Cg0NVf/+/TVx4kStWrXKkgTfsGrVKnXt2lUVK1a0XF9UVJRatmyp6OhoJSYmasGCBdq2bZv27NmTYypJQT344IP6888/9cknn2jevHmqUqWKJMnPzy/X+omJiWrbtq2uXLmip556SpUrV9ayZct0//3369NPP1WfPn2s6s+aNUtOTk6aMGGCUlJSNHv2bD3yyCPauXNnoeIGAOQfiThQRqWmpurUqVN64IEHCn2uSpUqKTY2Vs7OzpKklJQUPfXUU2rVqpW2bNliNa3EbDYXur02bdqoTp062rRpkx599NHb1r906ZKeeuopjRgxwjLfXZKGDBmiunXr6tVXX9XixYsVHBysu+66SytXrrRKxP/73//qyJEjltHqjIwMTZo0SQ0bNtTWrVst1xcREaGePXtq3rx5mjFjRqGusXHjxmrWrJk++eQT9e7dW6GhobesP2vWLCUmJur7779XRESEJGnkyJFq3Lixxo8frwceeMBqTvm1a9e0d+9elStXTpJUsWJFjR07Vr/++qsaNmxYqNgBAPnD1BSgjEpNTZUkeXt7F/pcI0eOtCThkrRp0yZdvHhRzz33XI653UWxlN/tbNq0SRcuXNCgQYOUlJRk+XF2dlbr1q317bffWuoOGDBAP//8s+Li4ixlK1eulJubm+VLy08//aSzZ8/qiSeesLq+Hj16qF69ejmmgxSH9evXq1WrVpYkXJK8vLw0atQoHTt2TL///rtV/aioKEsSLknt27eXdH16CwCgeJCIA2WUj4+PJOnixYuFPleNGjWstm8ksSVlZPXQoUOSpM6dO8vPz8/qZ+PGjTp79qylbr9+/eTk5KSVK1dKuj6Cv3r1at13332W1+zGHPK6devmaKtevXq5zjEvasePH881nvr161v23yw4ONhq+8aUm5vnwAMAihZTU4AyysfHR1WrVtWvv/5a6HN5eHjYdFxeo+NZWVlWI+yFlZ2dLen6PPHAwMAc+11c/vdRWLVqVbVv316rVq3S888/rx9//FHx8fF67bXX7BLLra65OOX1+tpj6hAAIH9IxIEyrGfPnlq8eLF27NihNm3a2O28NWvWlCT9+uuvqlWrVp71KlasmOvDao4fP66wsLBbtlGQKS434vH391eXLl1uW3/AgAF64okndPDgQa1cuVKenp7q1auXZX9ISIik62t5d+7c2erYgwcPWvbn5sbI89+vO7dR9IJcY0hIiA4ePJij/I8//rCKGQBQcjA1BSjDJk6cqPLly2vEiBFKTEzMsT8uLk4LFiwo8Hm7du0qb29vRUdH69q1a1b7bh5xrVmzpn788Uelp6dbytauXasTJ07cto0ba5Xn56mTkZGR8vHx0auvvqqMjIwc+8+dO2e13bdvXzk7O+uTTz7R6tWr1bNnT6u10Vu0aCF/f38tWrRIaWlplvINGzbowIED6tGjR56x+Pj4qEqVKtq6datV+dtvv12oa+zevbt27dqlHTt2WMouX76sxYsXKzQ0VA0aNLjtOQAAxYsRcaAMq1mzppYvX64BAwaofv36Vk/W3L59u1avXp3rOt+34+Pjo3nz5mnEiBFq2bKlHn74YVWsWFH79u3TlStXtGzZMknSiBEj9Omnn6pbt27q37+/4uLi9NFHH1lGsG+lefPmkqSnnnpKkZGRcnZ21sCBA/OM55133tFjjz2mZs2aaeDAgfLz81N8fLzWrVundu3a6V//+pelvr+/vzp16qS5c+fq4sWLGjBggNX5XF1d9dprrykqKkodOnTQoEGDLMsXhoaG6umnn75l7CNGjNCsWbM0YsQItWjRQlu3btWff/6Z5zW+8MILGjhwoFxdXdWrV69cH5j03HPP6ZNPPtF9992np556SpUqVdKyZct09OhRffbZZzyFEwBKIjOAMu/PP/80jxw50hwaGmouV66c2dvb29yuXTvzW2+9Zb527ZqlXkhIiHnIkCGW7aVLl5olmf/73//met41a9aY27Zta/bw8DD7+PiYW7VqZf7kk0+s6rzxxhvmatWqmd3c3Mzt2rUz//TTT+YOHTqYO3ToYKlz9OhRsyTz0qVLLWWZmZnmJ5980uzn52c2mUzm/Hycffvtt+bIyEizr6+v2d3d3VyzZk3z0KFDzT/99FOOukuWLDFLMnt7e5uvXr2a6/lWrlxpDg8PN7u5uZkrVapkfuSRR8wnT560qjNt2rQcsV25csU8fPhws6+vr9nb29vcv39/89mzZ82SzNOmTbOqO3PmTHO1atXMTk5OZknmo0ePms3mnH1hNpvNcXFx5oceeshcoUIF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NWvUoEEDubm5KT4+PsfUlOzsbEVHR6tGjRry8PBQkyZN9Omnn1r2b9myRSaTSRs2bFDz5s3l5uamH374IV/XlRcScQAAgBLOy8tLXl5e+uKLL5SWlpZnvX79+uns2bPasGGDfv75ZzVr1kz33HOPzp8/L0lat26d+vTpo+7du2vPnj2KjY1Vq1atLMcPHTpUP/30k9asWaMdO3bIbDare/fuysjIsNS5cuWK5syZow8//FBbt25VfHy8JkyYYNn/xhtvKCYmRu+//75++OEHnT9/Xp9//vltr/HKlSt65ZVX9MEHH2jbtm26cOGCBg4caNl/6dIlde/eXbGxsdqzZ4+6deumXr16KT4+3uo8c+bMUZMmTbRnzx5NmTLFcu7XXntN7777rn777Tf5+/vnaD86OloffPCBFi1apN9++01PP/20Hn30UX333XdW9Z577jnNmjVLBw4cUOPGjW97XbdiMhs9OaaUSE1Nla+vr1JSUuTj42N0OAAAIB9y+/197do1HT16VDVq1JC7u7v1ASV4jvhnn32mkSNH6urVq2rWrJk6dOiggQMHWpLBH374QT169NDZs2fl5uZmOa5WrVqaOHGiRo0apbZt2yosLEwfffRRjvMfOnRIderU0bZt29S2bVtJUnJysqpXr65ly5apX79+iomJUVRUlA4fPqyaNWtKkt5++2299NJLSkhIkCRVrVpVTz/9tJ599llJUmZmpmrUqKHmzZvriy++yPXabpz3xx9/VOvWrSVJf/zxh+rXr6+dO3dafVm4WcOGDfWPf/xDY8aMkXR9RDw8PNwq8b9x7r1796pJkyaW8qFDh+rChQuWLzeVKlXS5s2b1aZNG0udESNG6MqVK1q+fLm2bNmiTp066YsvvtADDzyQZz/d8v31N4yIAwAAlAJ9+/bV6dOntWbNGnXr1k1btmxRs2bNFBMTI0nat2+fLl26pMqVK1tG0L28vHT06FHFxcVJkvbu3at77rkn1/MfOHBALi4ulkRYkipXrqy6devqwIEDljJPT09LEi5JQUFBOnv2rCQpJSVFZ86csTqHi4uLWrRocdvrc3FxUcuWLS3b9erVU4UKFSxtX7p0SRMmTFD9+vVVoUIFeXl56cCBAzlGxHNrq1y5crccvT58+LCuXLmie++91+q1++CDDyyv3a3Obytu1iwhQp9bZ0i7x9wfNqTd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VVxcnHx8fJSamipfX1+lp6fr6tWrkqSqVavK1dXVbsECAAAAjsLmqSnTp09XXFycPvjgA/3111+SpKefflqXL1/Wzp071apVK4WGhuq3336zW7AAAACAo7A5EV+/fr3uuecePfroozmWNWzZsqU2bNigY8eOacaMGYUOEgAAAHA0NifiZ86cUXh4uGXb2dnZMiVFkipWrKj77rtPq1atKlyEAAAAgAOyORH39fVVRkaGZbtixYo6efKkVR0fHx8lJibaHh0AAADgoGxOxMPCwnTs2DHLdnh4uDZt2qTk5GRJ0tWrV/XVV18pODi40EECAAAAjsbmRLxr166KjY3VlStXJEmjR4/W2bNn1aRJE/Xr108NGzZUXFychg4daq9YAQAAAIdhcyL+j3/8Q0uWLLEk4g8++KBef/11Xb58WZ999pkSEhI0fvx4Pfvss3YLFgAAAHAUNq8jHhQUpAEDBliVPfPMMxo3bpySkpLk7++fYzUVAAAAANfZ/RH3zs7OCggIKHQSvnDhQoWGhsrd3V2tW7fWrl278qz773//Wy1atFCFChVUvnx5NW3aVB9++KFVHbPZrKlTpyooKEgeHh7q0qWLDh06VKgYAQAAAFsV6hH30vVlDFesWKE9e/YoJSVFvr6+Cg8P18CBAxUUFGTTOVeuXKnx48dr0aJFat26tebPn6/IyEgdPHhQ/v7+OepXqlRJL7zwgurVq6dy5cpp7dq1ioqKkr+/vyIjIyVJs2fP1ptvvqlly5apRo0amjJliiIjI/X777/L3d29UK8BAAAAUFCFGhFfuHChatasqQkTJuijjz7SV199pY8++kjPPPOMatasqbffftum886dO1cjR45UVFSUGjRooEWLFsnT01Pvv/9+rvU7duyoPn36qH79+qpZs6bGjh2rxo0b64cffpB0fTR8/vz5evHFF/XAAw+ocePG+uCDD3T69Gl98cUXtl4+AAAAYDObR8RXrFihJ598UlWqVNELL7yg9u3bKyAgQImJidq6dasWLFhg2d+/f/98nzc9PV0///yzJk+ebClzcnJSly5dtGPHjtsebzab9Z///EcHDx7Ua6+9Jkk6evSoEhIS1KVLF0s9X19ftW7dWjt27NDAgQNznCctLU1paWmW7dTUVElSRkaGZf10JycnOTs7KysrS9nZ2VbxOjs7KzMzU2az2VLu7Ows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2blz51zLMzMzderUKcvNnFOnTrW1CQAAAMBh2ZyIb9myJddyk8mkihUrqmvXrho/frzuvfdeW5sAAAAAHFah1hEHAAAAYBubE/Ebzp49q1OnTik7O1vVqlVTYGCgPeICAAAAHJpNN2umpaVp9uzZql27toKCgtSiRQu1atVK1apVU5UqVfT000/f8oE/AAAAQFlX4ET8xIkTatmypSZPnqy4uDgFBQWpVatWatWqlYKCgnT+/HktWLBALVq00ObNmy3HnTlzhjXFAQAAgP+vQIl4RkaGunfvrl9//VWDBg3SgQMHdPLkSe3YsUM7duzQyZMndeDAAT3yyCM6f/68evfurWPHjikuLk4RERH6448/iuo6AAAAgFKlQHPE/+///k+//fabpk2bpmnTpuVap27duvrwww9Vp04dTZs2TY888oiOHTumpKQkNW/e3C5BAwAAAKVdgUbEV61apVq1auVrbfAXX3xRtWvX1o4dO3Tt2jV988036tGjh82BAgAAAI6kQIn477//rq5du8pkMt22rslkstTduXOnOnbsaGuMAAAAgMMpUCJ+6dIl+fr65ru+j4+PXFxcVKtWrQIHBgAAADiyAiXi/v7+Onz4cL7rx8XFyd/fv8BBAQAAAI6uQIl4mzZttGHDBiUkJNy2bkJCgtatW6eIiAibgwMAAAAcVYES8X/84x+6dOmS+vTpo6SkpDzrJScnq0+fPrpy5YpGjx5d4KAWLlyo0NBQubu7q3Xr1tq1a1eedX/77Tf17dtXoaGhMplMmj9/fo4606dPl8lksvqpV69egeMCAAAA7KVAyxd26tRJI0eO1JIlS1S/fn2NHj1anTt3VvXq1SVdf9hPbGyslixZoqSkJI0aNarAN2muXLlS48eP16JFi9S6dWvNnz9fkZGROnjwYK7TXK5cuaKwsDD169dPTz/9dJ7nvfPOO60eMOTiUqBLBwAAAOyqwNno22+/LR8fH82bN0/R0dGKjo622m82m+Xk5KQJEybk2Jcfc+fO1ciRIxUVFSVJWrRokdatW6f3339fzz33XI76LVu2VMuWLSUp1/03uLi4KDAwsMDxAAAAAEWhwIm4s7OzXn/9dY0aNUoxMTHasWOHZc54YGCg2rZtqyFDhqh27doFDiY9PV0///yzJk+ebClzcnJSly5dtGPHjgKf72aHDh1S1apV5e7urjZt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z566cOECv8RLoQ8//FDHjx/Xpk2b1KhRIzVo0ECvv/66EhMT5eTkJJPJpJMnT2rgwIFKSkoyOlzY4M0339T+/fv12Wef6fz581qxYoWioqJUsWJFffzxx5o4caJSUlL491tK/etf/1LdunX15JNP6vvvv9eVK1dy1ElNTdWGDRuUkZFhQIQAbiARR4G5urrq0qVL+uOPPyRJ165dU3p6uiSpU6dO+uCDD5SZmalNmzYZGSZs9Msvv2jkyJH66quv9MMPP6hLly566623VLVqVXXs2FErVqzQZ599pj///FNhYWFGhwsbbNiwQcOHD1f79u0lSQ0bNtTo0aP1wQcfaPbs2frxxx81dOhQY4OEzT755BM1aNBAO3fuVMeOHdW8eXNNnz5dv/76q7KysiRdH1CZMWOGXF1dDY4WKNtIxFFg/fr1k5OTk9566y1du3ZN7u7uKleunLKzsyVJ9erVU+XKlXX8+HGDI0VBpaWl6c4771RoaKiCg4PVtm1bzZs3Tzt37tRnn32mwMBAPfnkk3r66ac1adIko8OFDTIyMnTnnXfq888/V3JysqTrUxmysrLk5OSkrl27auHChTp8+LB+/fVXg6NFQZ07d07lypXT448/rl27dunXX39Vnz59FBMTo6ZNm6pDhw5atGiR3n77bbVu3drocIEyjzniKJAbc4Q///xzjR07VqmpqRowYIAef/xxhYeH68yZM9qyZYtGjRql/fv3KzQ01OiQUUBpaWlKTk5W1apVc9xwm5GRoc2bN6tHjx46ceKEqlWrZmCksNWPP/6oxx57TAMHDtS4ceNy3KB58uRJ1atXTwcPHqSPS5kzZ85oxYoVuvPOO9W1a1dLeVZWlrZv3673339fn3/+uVJTUxUfH6877rjDwGgBkIjDJmlpaYqLi9N3332nL7/8Uj/88INMJpOqVaumjIwMPfLII3rppZeMDhM2OnPmjMqVK5frChozZ87U0qVLdeTIEQMiQ2GZzWZlZmZq6dKlev7555WVlaX+/ftr0KBBCgkJ0d69e7VmzRrt379fP/30k9HhwgZXr16VJHl4eOR6w+2ECRP0n//8R7t37zYiPAA3IRFHviUlJWnlypV6/fXXVblyZVWqVEkVK1ZUq1atFB4eritXrujIkSO67777VLt2bW70KmVu9O+cOXPk5+cnHx8fVa1aVffff7969OghDw8PZWdn691331XVqlXVs2dPo0NGIV24cEExMTFavny59u7dK19fX7m7u6tZs2aaPHmy7rrrLqNDhJ1du3ZNTZs2VVRUFNPLgBKARBz5NmzYMO3bt0/33XefvLy8lJycrMOHD+vUqVMKCQnRjBkz1KBBA6PDhI1u7l9vb28lJyfrwIEDOnHihGrXrq3x48erTZs2RoeJQrh69ao8PDysysxms65evapLly5p//798vLyYu5wKZVb/+ZWZ9WqVRo0aJDlYWwAjEMijnwxm83y8vLS+vXr1aFDB0vZ4cOH9f333+vdd9/V+fPn9emnn6phw4YGR4uCyqt/4+Li9P3332vJkiVKSUnRqlWrrNYVR+nyzDPPqF27dmrevLkCAwPl5uaWo85ff/2lihUrsoZ4KZSf/r1w4YIqVKhQ/MEByBWrpiBffv/9d4WFhal8+fKWMpPJpNq1a2vYsGGKjY2Vm5ubPv30UwOjhK3y6t9atWopKipKsbGxcnFx0erVqw2MEoWxfPlyzZs3TwMHDlSnTp00efJkffvtt0pMTLSsJZ2amqqoqCjt37+fJLyUyat/z549q8zMTEnS5cuXNXjwYFbDAUoQRsSRL1evXlXPnj2VmZmpmJgYhYaG5vhFPXfuXC1fvpwbvEoh+tfxjRgxQuXKldOECRP0ySef6N1339Xx48cVHh6ufv36KTIyUnv37tWoUaN4yEspRP8CpRMj4sgXDw8Pvfzyy0pNTdVjjz2m5cuX68yZM5a789PS0vTjjz+qbt26BkcKW9C/ji0zM1NhYWGqUKGCwsLC9MILL+jo0aPau3evWrRooVmzZunuu+/W6NGj9dhjjxkdLgqI/gVKL0bEUSD79+/XzJkz9dVXX8nLy0sREREKDAzUN998oypVqujdd99V48aNjQ4TNqJ/HdeFCxeUmJiounXrKj09Xa6urlZ/9fj444/12GOPac+ePWrSpImBkcIW9C9QOpGIwyZnz57V2rVr9cUXX8jDw0MNGzbUQw89pPr16xsdGuyA/i0bsrOzZTab5ezsrCVLlmjs2LG6cuWK0WHBTuhfoOQjEUeh/f3pi3As9G/ZMHfuXGVlZenZZ581OhQUAfoXKJlIxAEAysjIkLOzM1+6HBT9C5RMJOIAAACAAfhqDAAAABiARBwAAAAwAIk4AAAAYAAScQAAAMAAJOIAAACAAUjEAQAAAAOQiAMAAAAGIBEHAAAADEAiDgAAABjg/wFTdIfR3MRTEwAAAABJRU5ErkJggg==" }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit.quantum_info import Statevector\n", "from qiskit.visualization import plot_histogram\n", "\n", "\n", "statevector_1 = Statevector(c12_result.data()['sv1'])\n", "statevector_2 = Statevector(c12_result.data()['sv2'])\n", "statevector_final = Statevector(c12_result.get_statevector())\n", "\n", "\n", "probability_1 = statevector_1.probabilities_dict()\n", "probability_2 = statevector_2.probabilities_dict()\n", "probability_final = statevector_final.probabilities_dict()\n", "\n", "\n", "labels = ['First barrier', 'Second barrier', 'Final']\n", "plot_histogram([probability_1, probability_2, probability_final], legend = labels, title=\"Circuit evolution\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A different way to get the mid-circuit state vector and density matrix is by using the methods `get_mid_density_matrix()` and `get_mid_statevector()` from the `C12SimJob` class.\n", "\n", "These methods return `DensityMatrix` and `Statevector` instances, respectively." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:54:10.669860Z", "start_time": "2024-10-08T14:54:10.510073Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Statevector([0.50000028+0.j, 0.49999972+0.j, 0. +0.j,\n", " 0. +0.j],\n", " dims=(2, 2))\n", "DensityMatrix([[0.50000028+0.00000000e+00j, 0.5 -5.57109917e-07j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j],\n", " [0.5 +5.57109917e-07j, 0.49999972+0.00000000e+00j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j],\n", " [0. +0.00000000e+00j, 0. +0.00000000e+00j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j],\n", " [0. +0.00000000e+00j, 0. +0.00000000e+00j,\n", " 0. +0.00000000e+00j, 0. +0.00000000e+00j]],\n", " dims=(2, 2))\n" ] } ], "source": [ "# Attention! job is the instance obtained from the search, so it doesn't have any results stored, so we need to call result() function\n", "# see notebook 3 for more information\n", "c12_job.result()\n", "statevecotor_1 = c12_job.get_mid_statevector(1)\n", "density_matrix_1 = c12_job.get_mid_density_matrix(1)\n", "\n", "print(statevector_1)\n", "print(density_matrix_1)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:54:12.468431Z", "start_time": "2024-10-08T14:54:12.465064Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "# If we try to get the results from the non-existing barrier we will get None as a result\n", "print(c12_job.get_mid_statevector(15))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualization of the states" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "ExecuteTime": { "end_time": "2024-10-08T14:54:14.341589Z", "start_time": "2024-10-08T14:54:14.187997Z" } }, "outputs": [ { "data": { "text/plain": "
", "image/png": "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zlVTe3fLli0aPXq0OnTooLp166pZs2a644479MMPP5guDb9TXo8Wvx5//HHT5Tns+++/19NPP31JoXvp0qWaMWOG02pyJ7VMF+ANJk+erBYtWsiyLGVmZuq1117TzTffrA8++EB//vOfXVLD3Xffrb/+9a+y2+3VPldWVpYmT56sZs2aKSoqSuvXr6/2OVE9alrvTp06VRs3btTtt9+uzp07KyMjQ7Nnz1a3bt3073//Wx07dqz2GuCY4h79rY4dO6p58+Y6ffq0/Pz8DFXmmO+//16TJk3Sddddp8jIyCptY+nSpfr22281ZswYp9bmDggjTnDTTTepe/fuJV8PHTpUoaGheuutt5zyC72oqEgFBQUKCAgo815eXp7q1q0rX19f+fr6XvJcv99ueRo3bqwjR44oLCxMW7du1RVXXOG0eeFaNa13ExMTtXTpUvn7+5csS0hIUKdOnZSSkqI33njDaXXAOX7fo79VXl/BM3GYphrUr19ftWvXVq1apbPetGnT1KtXL1122WWqXbu2oqOjtXLlyjLjbTabRo8erTfffFMdOnSQ3W7X6tWrS3Zbfv755xo5cqQaNWqkJk2aSKr4uPvHH3+s3r17q27duqpXr5769eun7777rtQ699xzjwIDA7Vnzx7dfPPNqlevnu66664KP5/dbldYWFgVvztwZ97eu7169SoVRCSpdevW6tChg3bs2OHItwqGlXfOSHE/HDp0SLfccosCAwN1+eWX69FHH1VhYWGp8ZXt6cpatmyZoqOjVa9ePQUFBalTp06aOXOmpPM9fvvtt0uS+vTpU3K4qXiv8nvvvad+/fopPDxcdrtdLVu21DPPPFOq5uuuu06rVq3S/v37S8b/dg9Lfn6+Jk6cqFatWslut6tp06YaO3as8vPzq/yZXIk9I06Qk5OjrKwsWZalo0ePatasWTp58qT+93//t9R6M2fOVP/+/XXXXXepoKBAy5Yt0+23364PP/xQ/fr1K7XuZ599prffflujR49WSEiIIiMjtX37dknSyJEjdfnllyspKUl5eXkV1rVkyRINHjxYcXFxmjp1qk6dOqW5c+fq6quv1rZt20o18rlz5xQXF6err75a06ZNU506dZz2/YH7ondVcoiqQ4cODo2DaxT36G+FhIRUuH5hYaHi4uLUs2dPTZs2TZ9++qleeOEFtWzZUvfff3/Jeo709MWsXbtWAwcO1PXXX6+pU6dKknbs2KGNGzfqoYce0jXXXKMHH3xQL730kiZMmKB27dpJUsn/vvbaawoMDFRiYqICAwP12WefKSkpSbm5uXr++eclSU888YRycnL0888/68UXX5QkBQYGSjq/B7J///764osvdO+996pdu3b65ptv9OKLL+qHH37QP//5T4c+jxEWqmzx4sWWpDIvu91uvfbaa2XWP3XqVKmvCwoKrI4dO1p9+/YttVyS5ePjY3333Xflznf11Vdb586dK/e9vXv3WpZlWSdOnLDq169vDR8+vNR6GRkZVnBwcKnlgwcPtiRZjz/+uMPfgy1btliSrMWLFzs8FubQu79asmSJJclauHBhlbcB56uoR4v/s7V3794yv3uK+2Hy5MmlttW1a1crOjq61LLK9nTz5s2twYMHX7DWhx56yAoKCirT27+1YsUKS5K1bt26Mu/9vhbLsqz77rvPqlOnjnXmzJmSZf369bOaN29eZt0lS5ZYPj4+1oYNG0otnzdvniXJ2rhx4wXrdwfsGXGCOXPmqE2bNpKkzMxMvfHGGxo2bJjq1aunAQMGlKxXu3btkv//yy+/qLCwUL1799Zbb71VZpvXXnut2rdvX+58w4cPv+gx9rVr1yo7O1sDBw4s9VeFr6+vevbsqXXr1pUZ89u/GlAz1PTe3blzp0aNGqWYmBgNHjy4SttA9fptj1bWiBEjSn3du3dvLVmypNQyR3r6YurXr6+8vDytXbtWN954o8Pjf1vLiRMnlJ+fr969e+uVV17Rzp07FRUVdcHxK1asULt27dS2bdtSPzN9+/aVJK1bt069evVyuC5XIow4QY8ePUqdYDVw4EB17dpVo0eP1p///OeSY9Qffvihnn32WW3fvr3UcTybzVZmm78/e7yy7xXbvXu3pF+b8feCgoJKfV2rVq2SY/ioOWpy72ZkZKhfv34KDg7WypUrnXoSLZzn9z16MQEBAbr88stLLWvQoIF++eWXUssc6emLGTlypN5++23ddNNNioiI0A033KA77rij0sHku+++05NPPqnPPvtMubm5pd7Lycm56Pjdu3drx44dZT53saNHj1aqDpMII9XAx8dHffr00cyZM7V792516NBBGzZsUP/+/XXNNdfo5ZdfVuPGjeXn56fFixdr6dKlZbbx26TsyHvFioqKJJ0/9l7e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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from qiskit.visualization import circuit_drawer\n", "import matplotlib.pyplot as plt\n", "from matplotlib.gridspec import GridSpec\n", "\n", "fig= plt.figure()\n", "\n", "gs = GridSpec(2, 3)\n", "\n", "ax1 = plt.subplot(gs[0, :])\n", "\n", "circ_fig = circuit_drawer(orig_circuit, output='mpl', ax=ax1)\n", "\n", "keys = {'00' : 0, '01' : 0, '10' : 0 , '11' : 0 }\n", "\n", "ax2 = plt.subplot(gs[1,0])\n", "ax2.set_ylim([0,1])\n", "ax2.title.set_text('Barrier 1')\n", "ax2_data = {**keys, **probability_1}\n", "ax2.bar(ax2_data.keys(), ax2_data.values())\n", "\n", "ax3 = plt.subplot(gs[1,1])\n", "ax3.set_ylim([0,1])\n", "ax3.set_yticks(())\n", "ax3.title.set_text('Barrier 2')\n", "ax3_data = {**keys, **probability_2}\n", "ax3.bar(ax3_data.keys(), ax3_data.values())\n", "\n", "ax4 = plt.subplot(gs[1,2])\n", "ax4.set_ylim([0,1])\n", "ax4.set_yticks(())\n", "ax4.title.set_text('Final state')\n", "ax4_data = {**keys, **probability_final}\n", "ax4.bar(ax4_data.keys(), ax4_data.values(), color='red')\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" } }, "nbformat": 4, "nbformat_minor": 4 }